package com.jrx.anytxn.param.service.system;

import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.param.dto.system.TransactionCodeTableReq;
import com.jrx.anytxn.param.dto.system.TransactionCodeTableRes;
import com.jrx.anytxn.param.entity.PrTransactionCodeTable;

import java.util.List;

/**
 * 交易码表 业务接口
 *
 * @author yx
 * @date 2019/4/30
 */
public interface ITransactionCodeTableService {

    /**
     * 根据租户ID分页查询交易码参数信息
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param tenantId 租户ID
     * @return com.jrx.anytxn.common.data.TxnPage<com.jrx.anytxn.param.dto.system.TransactionCodeTableRes>
     * @author fan.yang
     * date: 2019/10/12 0012 下午 18:12
     */
    TxnPage<TransactionCodeTableRes> findAllPageByTenId(Integer pageNum, Integer pageSize, String tenantId,String transactionCode) throws TxnException;

    /**
     * 添加交易码参数
     *
     * @param txnCodeTableReq 交易码参数
     * @return com.jrx.anytxn.param.dto.system.TransactionCodeTableRes
     * @author fan.yang
     * date: 2019/10/12 0012 下午 18:12
     */
    TransactionCodeTableRes addTransactionCodeTable(TransactionCodeTableReq txnCodeTableReq) throws TxnException;

    /**
     * 更新交易码参数
     *
     * @param txnCodeTableReq 交易码参数
     * @return com.jrx.anytxn.param.dto.system.TransactionCodeTableRes
     * @author fan.yang
     * date: 2019/10/12 0012 下午 18:12
     */
    TransactionCodeTableRes modifyTransactionCodeTable(TransactionCodeTableReq txnCodeTableReq) throws TxnException;

    /**
     * 根据交易码和租户ID删除交易码表信息
     *
     * @param transactionCode 交易码
     * @param tenantId        租户ID
     * @return java.lang.Boolean
     * @author fan.yang
     * date: 2019/10/12 0012 下午 18:08
     */
    Boolean removeByCodeAndTenId(String transactionCode, String tenantId) throws TxnException;

    /**
     * 通过交易码和租户ID查询交易码参数
     *
     * @param transactionCode 交易码
     * @param tenantId        租户ID
     * @return com.jrx.anytxn.param.dto.system.TransactionCodeTableRes
     * @author fan.yang
     * date: 2019/10/12 0012 下午 17:59
     */
    TransactionCodeTableRes findByCodeAndTenId(String transactionCode, String tenantId) throws TxnException;

    /**
     * 通过交易码查询交易码信息
     * 内部调用使用
     *
     * @param transactionCode 交易码
     * @param tenantId        租户ID
     * @return 交易码信息
     * @throws  TxnBizException 未查询到交易码异常
     */
    PrTransactionCodeTable findByCodeAndTenantId(String transactionCode, String tenantId) throws TxnBizException;

    /**
     * 根据租户ID查询
     *
     * @param tenantId 租户ID
     * @return java.util.List<com.jrx.anytxn.param.dto.system.TransactionCodeTableRes>
     * @author fan.yang
     * date: 2019/10/12 0012 下午 18:12
     */
    List<TransactionCodeTableRes> findByTenId(String tenantId);

}
